/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package modele;

import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
/**
 *
 * @author elo
 */
public class DAO {
    
   private static final String url = "http://gaemedecins.appspot.com/Controleur/medParDep/listeDep";
    
   public static List<String> getLesDeps() {
       
          List<String> lesDeps = new ArrayList<String>();
          try {
           
           URL myURL = new URL(url);
           Document doc;
           DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
           DocumentBuilder db = dbf.newDocumentBuilder();
           doc = db.parse(myURL.openStream());
           
           Element racine = doc.getDocumentElement();
           
           NodeList listeDep = racine.getElementsByTagName("Departement");
           for(int i = 0; i<listeDep.getLength(); i++){
               Node departement= listeDep.item(i);
               NodeList lesProprietes = departement.getChildNodes();
               for(int j=0; j<lesProprietes.getLength();j++){
                   if(lesProprietes.item(j).getNodeName().equals("num")){
                       lesDeps.add(lesProprietes.item(j).getTextContent().trim());
                       break;
                   }
               }
           }
       } catch (Exception ex) {
           Logger.getLogger(DAO.class.getName()).log(Level.SEVERE, null, ex);
       }
          return lesDeps;
       
    }
   
   public static List<Med> getLesMed(String leDep) {
       
        List<Med> lesMed = new ArrayList<Med>();
          try {
           
           URL myURL = new URL("http://gaemedecins.appspot.com/Controleur/medParDep/listeMed/"+ leDep);
           Document doc;
           DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
           DocumentBuilder db = dbf.newDocumentBuilder();
           doc = db.parse(myURL.openStream());
           
           Element racine = doc.getDocumentElement();
           
           NodeList listeMed = racine.getElementsByTagName("Medecin");
           
           for(int i = 0; i<listeMed.getLength(); i++){
               Node medecin= listeMed.item(i);
               NodeList lesProprietes = medecin.getChildNodes();
               String nom = "";
               String prenom = "";
               String adresse = "";
               String specialite = "";
               String tel = "";
               for(int j=0; j<lesProprietes.getLength();j++){
                   
                   if(lesProprietes.item(j).getNodeName().equals("nom")){
                       nom = lesProprietes.item(j).getTextContent().trim();  
                   }
                   if(lesProprietes.item(j).getNodeName().equals("prenom")){
                       prenom = lesProprietes.item(j).getTextContent().trim();
                   }
                   if(lesProprietes.item(j).getNodeName().equals("adresse")){
                       adresse = lesProprietes.item(j).getTextContent().trim();
                   }
                   if(lesProprietes.item(j).getNodeName().equals("specialite")){
                       specialite = lesProprietes.item(j).getTextContent().trim();
                   }
                   if(lesProprietes.item(j).getNodeName().equals("tel")){
                       tel = lesProprietes.item(j).getTextContent().trim();
                   }
                   
               }
               Med m = new Med(nom, prenom, adresse, specialite, tel);
               lesMed.add(m);
           }
       } catch (Exception ex) {
           Logger.getLogger(DAO.class.getName()).log(Level.SEVERE, null, ex);
       }
       return lesMed;
   }
    
}
